Qt 中C++ async实现并行处理

您所在的位置:网站首页 qt for循环效率 Qt 中C++ async实现并行处理

Qt 中C++ async实现并行处理

2023-10-24 17:09| 来源: 网络整理| 查看: 265

在项目中,难免遇到性能问题,为了提高处理的性能,针对可以并行处理的部分单独提取出来,利用并行编程来提高处理的速度,从而实现高性能。C++11中有一个async()函数,非常方便的实现异步处理。 每次调用async()函数,会自动创建一个线程来进行处理,并返回一个future 未来变量,根据future变量,可以获取返回值。

async函数解析

函数原型如下:

/// Launch code for futures enum class launch { async = 1, deferred = 2 }; template using __async_result_of = typename result_of::type; template future async(launch __policy, _Fn&& __fn, _Args&&... __args); 1、入参

1.1 launch __policy 异步处理的策略,包括两种: async 和 deferred

async = 1, // 调用async函数的时候就已经运行程序了 deferred = 2 // 延迟运行,当返回的future调用get函数时开始运行异步处理函数。

1.2 _Fn&& __fn 异步处理的函数 1.3 _Args&&… __args 异步处理函数的输入参数。

简单的函数模型为: async(异步策略, 异步处理函数(lamda表达式比较方便), 异步处理函数的参数)

int func(int a) { std::cout std::cout // for循环对每个线程启动async处理 futureList[i] = std::async(std::launch::async, [&](int start, int end) { // policy是async,代表程序运行到这个地方,就已经开始运行后面的lamda表达式了 for (int j = start; j futureList[i].wait(); // 等待所有线程结束 } return; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3